package br.com.SGF.bean;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import br.com.SGF.dao.LocalDAO;
import br.com.SGF.domain.LocalDomain;
import br.com.SGF.util.JSFUtil;

@ManagedBean(name = "MBLocal")
@ViewScoped
public class LocalBean {

	private LocalDomain localDomain;
	private List<LocalDomain> locais;
	private List<LocalDomain> localFiltrados;
	private List<LocalDomain> listaLocal;

	public List<LocalDomain> getLocais() {
		return locais;
	}

	public void setLocais(List<LocalDomain> locais) {
		this.locais = locais;
	}

	public LocalDomain getLocalDomain() {
		if (localDomain == null) {
			localDomain = new LocalDomain();
		}
		return localDomain;
	}

	public void setLocalDomain(LocalDomain localDomain) {
		this.localDomain = localDomain;
	}

	public List<LocalDomain> getLocalFiltrados() {
		return localFiltrados;
	}

	public void setLocalFiltrados(List<LocalDomain> localFiltrados) {
		this.localFiltrados = localFiltrados;
	}

	public List<LocalDomain> getListaLocal() {
		return listaLocal;
	}

	public void setListaLocal(List<LocalDomain> listaLocal) {
		this.listaLocal = listaLocal;
	}

	public void carregarLocais() {
		try {
			LocalDAO localDao = new LocalDAO();
			listaLocal = localDao.listaLocal();
		} catch (RuntimeException ex) {
			ex.printStackTrace();
			JSFUtil.adicionarMensagemErro(ex.getMessage());

		}
	}

	public void saveOrUpdate() {
		try {
			LocalDAO localDao = new LocalDAO();
			localDao.saveOrUpdate(localDomain);
			listaLocal = localDao.listaLocal();

			JSFUtil.adicionarMensagemSucesso("Local salvo com sucesso!");
		} catch (RuntimeException ex) {
			ex.printStackTrace();
			JSFUtil.adicionarMensagemErro(ex.getMessage());
		}
	}

	public void excluirLocal() {
		try {
			LocalDAO localDao = new LocalDAO();
			localDao.excluir(localDomain);
			listaLocal = localDao.listaLocal();

			JSFUtil.adicionarMensagemSucesso("Local excluido com sucesso!");

		} catch (RuntimeException ex) {
			ex.printStackTrace();
			JSFUtil.adicionarMensagemErro(ex.getMessage());
		}
	}
	
	public void prepararNovo() {
		try {
			localDomain = new LocalDomain();
			LocalDAO localDao = new LocalDAO();
		
			listaLocal = localDao.listaLocal();
		} catch (RuntimeException ex) {
			ex.printStackTrace();
			JSFUtil.adicionarMensagemErro(ex.getMessage());
		}
	}
}
